package Telas.base;


import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToolBar;

import EnviaEmail.EnviaEmail;
import Telas.principal.TelaPrincipal;
import Util.Botoes;
import Util.CriaCampos;
import Util.GeneralParser;
import Util.Regras;
import Util.connect;
import Util.util;


public class Resultados extends JInternalFrame   {

	CriaCampos campos = new CriaCampos();
	Cursor cursor = Cursor.getPredefinedCursor( Cursor.WAIT_CURSOR );
	JTextField nr_jogo = new JTextField();
	JTextField tx_resultado = new JTextField();
	JTextArea tx_tela = new JTextArea();//apenas para completar a tela
	JLabel inf = new JLabel("ATENÇÃO COLOCAR OS NUMEROS POR SEPARADOS POR ,(VIRGULA) E SEM ESPAÇO");
	
	JButton btn_gravar  = new JButton();
	
	
		//classe pai dos objetos que ser�o instanciadas por essa classe
	private TelaPrincipal telaPrincipal;

	//m�todo construtor da tela
	public Resultados(String titulo, TelaPrincipal telaPrincipal) {

		//reescreve o m�todo construtor da classe pai, ajustando o t�tulo da janela (neste caso)
		super(titulo,false,true,false,true);

		setSize(700,450);
		setLocation(40, 40);

		btn_gravar.setName("gravar");
		btn_gravar.addActionListener(new ActionListener() {
			public void actionPerformed (ActionEvent e){
			  Gravar();
			}});
		
		Botoes b = new Botoes();
		JToolBar t = new JToolBar();
		t.add(b.botao(btn_gravar));
		t.setFloatable(false);
        btn_gravar.setEnabled(true); 
        btn_gravar.setPreferredSize(new Dimension(70, 20)); 
	
		this.getContentPane().setLayout(new GridBagLayout());  
		
		campos.add(t,this);
		campos.add("",new JLabel(),this);
		campos.add("Jogo:",nr_jogo,"Resultado",tx_resultado,this);
		campos.add(" ",inf,this);
		campos.add(" ",tx_tela,this);
		tx_tela.setVisible(false);
		nr_jogo.setText("");
		nr_jogo.setBackground(Color.white);
		nr_jogo.enable(true);
		tx_resultado.setText("");
		tx_resultado.setBackground(Color.white);
		tx_resultado.enable(true);
		
		setVisible(true);	
		this.telaPrincipal = telaPrincipal;
		telaPrincipal.jdPane.add(this);
		
	   }

	public void Gravar(){
		try {
		setCursor( cursor );	
		String tx_vencedor ="";
		Connection conn  = connect.getMYSQLConnection();
		connect c = new connect();
		String tx_sql="";
		String nr_jogo_ret=nr_jogo.getText();
		String tx_mensagem="";
		
		
		tx_sql="select vl_resultado from tab_jogo where nr_jogo="+nr_jogo_ret;
		ResultSet rs = c.rs_mysql(conn, tx_sql, "Select");
		
		if(rs.next()){
		//pega o valor anterior e guarda no Set	
		String tx_resultado_old= rs.getString("vl_resultado");	
		String tx_resultado_new= tx_resultado.getText();	
		
		Set<Integer> resultFim=new HashSet<Integer>();
		//Transforma os resultados em um Set<Integer>
		util.parseSetToInteger(Arrays.asList(tx_resultado_old.split(",")), resultFim);
		util.parseSetToInteger(Arrays.asList(tx_resultado_new.split(",")), resultFim);
		
		
		//grava o resultado na tabela de jogo
		tx_sql="SELECT cd_cod,tx_comprador,CONCAT(vl_col_b,',',vl_col_i,',',vl_col_n,',',vl_col_g,',',vl_col_o) as vl_cartela FROM tab_cartela where nr_jogo="+nr_jogo_ret;
		ResultSet rs_cartela = c.rs_mysql(conn, tx_sql, "Select");
		
		while(rs_cartela.next()){
			//pega os dados da cartela
			Set<Integer> vlCartela = new HashSet<Integer>();
			util.parseSetToInteger(Arrays.asList(rs_cartela.getString("vl_cartela").trim().split(",")), vlCartela);
			Integer vl_pontos=0;
			Integer cd_cod=rs_cartela.getInt("cd_cod");
			Integer ck_completo = 0;
			
			for (Integer resultado : resultFim) {
			  if(vlCartela.contains(resultado)){
				  vl_pontos++;
			  }
			}
			if(vl_pontos==24){
			  ck_completo=1;
			  tx_vencedor=rs_cartela.getString("tx_comprador");
		
			}
			tx_sql="update tab_cartela " +
					"set vl_pontos="+vl_pontos+
					" ,ck_completo="+ck_completo+
			        " where cd_cod="+cd_cod;
	        c.rs_mysql(conn, tx_sql, "Update");
		}
		String resultado = resultFim.toString().replace('[',' ').replace(']',' ');
		tx_sql="update tab_jogo set vl_resultado='"+resultado.replace(" ", "")+"'" +
				" ,tx_vencedor='"+tx_vencedor+"'"+
		        " where nr_jogo="+nr_jogo_ret;
        c.rs_mysql(conn, tx_sql, "Update");
		
        nr_jogo.setText("");
        tx_resultado.setText("");
        tx_mensagem="Registro Gravado com Sucesso";
        EnviaEmail e= new EnviaEmail();
        try {
			e.envia(GeneralParser.parseInt(nr_jogo_ret));
		} catch (Exception e1) {
			tx_mensagem="Erro ao enviar e-mail";	
		} 
       
	  }else{
		tx_mensagem="Jogo não encontrado!";	
		}
		cursor= Cursor.getDefaultCursor();
		setCursor( cursor );
		JOptionPane.showMessageDialog(null, tx_mensagem);
		repaint();
		conn.close();
		
		} catch (SQLException e) {
		  JOptionPane.showMessageDialog(null, "Erro na gravação. Favor tentar novamente, erro: \n" +e);
		}
	}
}

	

